Есть ли простой способ заставить 2 метода, скажем, MethodA () и MethodB () работать в 2 разных ядрах? Я не имею в виду 2 разных темы. Я работаю в Windows, но я хотел бы знать, возможно ли быть независимым от платформы.
редактировать: А как насчет
http://docs.python.org/dev/library/multiprocessing.html а также параллельный питон ?
Вы должны использовать отдельные процессы (из-за часто упоминаемого GIL). многопроцессорный модуль здесь, чтобы помочь.
from multiprocessing import Process from somewhere import A, B if __name__ == '__main__': procs = [ Process(target=t) for t in (A,B) ] for p in procs: p.start() for p in procs: p.join()
Вообще, запуск разных потоков - лучший переносимый способ запуска на нескольких ядрах. Конечно, в Python глобальная блокировка интерпретатора делает этот вопрос спорным - за один раз может прогрессировать только один поток.
Из-за глобальной блокировки интерпретатора программы Python всегда запускают только один поток за раз. Если вам нужно настоящее многоядерное программирование на Python, вы можете взглянуть на Jython (который имеет доступ к потокам JVM) или на блестящий без стека , который имеет Go как каналы и тасклеты.
Если вы используете CPython (эталонная реализация), ответ будет NO из-за Global Interpreter Lock . В CPython потоки в основном используются, когда требуется много ввода-вывода (один поток ожидает, другой выполняет вычисления).