pythonマルチプロセス使用及びスレッド池の使用方法コード詳細
マルチプロセス:主にmultiprocessingモジュールを実行します。
以上は小编が皆さんに绍介したpythonマルチプロセスの使用及びスレッド池の使用方法コードの详しい解です。皆さんに助けてほしいです。ここでも私たちのサイトを応援してくれてありがとうございます。
import os,time
import sys
from multiprocessing import Process
class MyProcess(Process):
"""docstring for MyProcess"""
def __init__(self, arg, callback):
super(MyProcess, self).__init__()
self.arg = arg
self.callback = callback
def run(self):
self.callback(self.arg)
def test(arg):
print(" {} >>> pid={}".format(arg,os.getpid()))
for i in range(1,5):
sys.stdout.write(" {} {}\r".format(arg,i))
sys.stdout.flush()
time.sleep(1)
def main():
print(" >>> pid={}".format(os.getpid()))
myp=MyProcess(1,test)
myp.start()
myp2=MyProcess(2,test)
myp2.start()
myp.join()
myp2.join()
print(" ")
if __name__ == '__main__':
main()
スレッド池:主に未来モジュールを使っています。次の例では、最初は正常で、第二のスレッドプール、第三は2つのスレッドを実行して、列に並びます。
from concurrent.futures import ThreadPoolExecutor
import time
def sayhello(a):
print("hello: "+a)
time.sleep(2)
def main():
seed=["a","b","c"]
start1=time.time()
for each in seed:
sayhello(each)
end1=time.time()
print("time1: "+str(end1-start1))
start2=time.time()
with ThreadPoolExecutor(3) as executor:
for each in seed:
executor.submit(sayhello,each)
end2=time.time()
print("time2: "+str(end2-start2))
start3=time.time()
with ThreadPoolExecutor(2) as executor1:
executor1.map(sayhello,seed)
end3=time.time()
print("time3: "+str(end3-start3))
if __name__ == '__main__':
main()
締め括りをつける以上は小编が皆さんに绍介したpythonマルチプロセスの使用及びスレッド池の使用方法コードの详しい解です。皆さんに助けてほしいです。ここでも私たちのサイトを応援してくれてありがとうございます。