开发者

Running methods on different cores on python

开发者 https://www.devze.com 2022-12-12 09:36 出处:网络
Is there any easy way to make 2 methods, let\'s say MethodA() and MethodB() run in 2 different cores? I don\'t mean 2 different threads. I\'m running in Windows, but I\'d like to know if it is possibl

Is there any easy way to make 2 methods, let's say MethodA() and MethodB() run in 2 different cores? I don't mean 2 different threads. I'm running in Windows, but I'd like to know if it is possible to be platform independent.

edit: And 开发者_JAVA技巧what about

http://docs.python.org/dev/library/multiprocessing.html and parallel python ?


You have to use separate processes (because of the often-mentioned GIL). The multiprocessing module is here to help.

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()


Assuming you use CPython (the reference implementation) the answer is NO because of the Global Interpreter Lock. In CPython threads are mainly used when there is much IO to do (one thread waits, another does computation).


In general, running different threads is the best portable way to run on multiple cores. Of course, in Python, the global interpreter lock makes this a moot point -- only one thread will make progress at a time.


Because of the global interpreter lock, Python programs only ever run one thread at a time. If you want true multicore Python programming, you could look into Jython (which has access to the JVM's threads), or the brilliant stackless, which has Go-like channels and tasklets.

0

精彩评论

暂无评论...
验证码 换一张
取 消