# -*- coding:utf-8 -*-
from multiprocessing import process, manager
import time
import random
defkkk
(a_list, number):
for i in range(10):
time.sleep(random.randrange(2))
print('這是程序{} {}'.format(number, a_list))
print('這是程序{} {}'.format(number, a_list))
defjjj
(a_list):
for i in range(2):
process = process(target=kkk, args=(a_list, i))
process.start()
if __name__ == '__main__':
a_list =
process_0 = process(target=jjj, args=(a_list,))
process_0.start()
process_0.join()
print(a_list)
print(len(a_list))
print('it\'s ok')
輸出:
這是程序0 [0]
這是程序0 [0, 1]
這是程序0 [0, 1, 2]
這是程序0 [0, 1, 2, 3]
這是程序1 [0]
這是程序0 [0, 1, 2, 3, 4]
這是程序1 [0, 1]
這是程序0 [0, 1, 2, 3, 4, 5]
這是程序1 [0, 1, 2]
這是程序1 [0, 1, 2, 3]
這是程序1 [0, 1, 2, 3, 4]
這是程序1 [0, 1, 2, 3, 4, 5]
這是程序0 [0, 1, 2, 3, 4, 5, 6]
這是程序0 [0, 1, 2, 3, 4, 5, 6, 7]
這是程序0 [0, 1, 2, 3, 4, 5, 6, 7, 8]
這是程序1 [0, 1, 2, 3, 4, 5, 6]
這是程序0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
這是程序0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
這是程序1 [0, 1, 2, 3, 4, 5, 6, 7]
這是程序1 [0, 1, 2, 3, 4, 5, 6, 7, 8]
這是程序1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
這是程序1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0it's ok
process finished with
exit code 0
使用 manager
# -*- coding:utf-8 -*-
from multiprocessing import process, manager
import time
import random
defkkk
(a_list, number):
for i in range(10):
time.sleep(random.randrange(2))
print('這是程序{} {}'.format(number, a_list))
print('這是程序{} {}'.format(number, a_list))
defjjj
(a_list):
for i in range(2):
process = process(target=kkk, args=(a_list, i))
process.start()
if __name__ == '__main__':
manager = manager()
a_list = manager.list()
# a_list =
process_0 = process(target=jjj, args=(a_list,))
process_0.start()
process_0.join()
print(a_list)
print(len(a_list))
print('it\'s ok')
輸出:
這是程序0 [0, 0]
這是程序0 [0, 0, 1]
這是程序0 [0, 0, 1, 2]
這是程序0 [0, 0, 1, 2, 3]
這是程序0 [0, 0, 1, 2, 3, 4]
這是程序1 [0, 0, 1, 2, 3, 4, 5]
這是程序0 [0, 0, 1, 2, 3, 4, 5, 1]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5]
這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6]
這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7]
這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7]
這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]
這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]
這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]
[0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]
20it's ok
process finished with
exit code 0
python多程序共享資料
python的multiprocessing模組提供兩種共享記憶體,sharedctypes與manager,manager效率較低,但支援遠端共享記憶體。sharedctypes效率較高,快manager兩個數量級,在多程序訪問時與普通記憶體訪問相當 共享方式 支援的型別 shared memor...
多程序資料共享
不用程序池的多程序的資料共享from multiprocessing import process,queue queue queue def func a,q re f 我是子程序 我放入data q.put re if name main ls for i in range 10 p proce...
python多程序之資料共享Manager
多程序中,各個程序開闢空間,資料是不共享的,如果想讓其資料在各個程序中實現共享,需要借助manager from multiprocessing import process from multiprocessing import manager from multiprocessing impor...