進程,線程

import os, timeif __name__ == '__main__':print('the calling process id:%d' % os.getpid())# 創建進程pid = os.fork()if pid == 0:# 子進程print('the child pid is %d' % os.getpid())time.sleep(3)elif pid > 0:# 父進程os.wait() # 等待子進程終止print('[%d]bye-bye' % os.getpid())
import os, sysif __name__ == '__main__':while True:cmd = input('[root@localhost xxxx]# ')if cmd == 'quit' or cmd == 'exit':# 終止進程sys.exit(0) # os._exit()# 'ls -l'cmdls = cmd.split()pid = os.fork()if pid == 0:# child  替換調用進程os.execlp(cmdls[0], *cmdls)# parentos.wait()
from multiprocessing import Process
import timen = 100def pro_test(arg):print('running argument is %s' % arg)global nn += 1print('n的地址:{}, n:{}'.format(id(n), n))time.sleep(1)def pro2_test():global nprint('n的地址:{}, n:{}'.format(id(n), n))print('n:%d' % n)print('''process 2......''')# 進程的構建方式二
class Myprocess(Process):def __init__(self, args):super().__init__()self.args = argsdef run(self):print('hello world with %s' % self.args)if __name__ == '__main__':pro = Process(target=pro_test, args=('python',))# 運行
    pro.start()# 收尸
    pro.join()print(pro.name, pro.pid)pro2 = Process()pro2.run = pro2_testpro2.start() # 啟動進程, 并調用run方法
    pro2.join()print(pro2.name, pro2.pid)pro3 = Myprocess('the argument of the process')pro3.start()pro3.join()

兩個進程全局變量是獨立的:

from multiprocessing import Process, Pipe
import time# 發送
def pro1(args):for i in range(10):# 向管道發送數據
        args.send(i)time.sleep(1)args.close()def pro2(args):while True:# 從管道接收數據r = args.recv()print('from pro1:%d' % r)if __name__ == '__main__':# 管道的創建,得到管道的兩端conn1, conn2 = Pipe()obj1 = Process(target=pro1, args=(conn1,))obj2 = Process(target=pro2, args=(conn2,))obj1.start()obj2.start()obj1.join()obj2.join()
from multiprocessing import Process, Queue
import time# 發送
def pro1(que):for i in range(10):# 向隊列中寫入
        que.put(i)time.sleep(2)def pro2(que):while True:print('from que get:{}'.format(que.get()))if __name__ == '__main__':# 創建隊列q = Queue()obj1 = Process(target=pro1, args=(q,))obj2 = Process(target=pro2, args=(q,))obj1.start()obj2.start()obj1.join()obj2.join()

?

from multiprocessing import Pool
import timedef pro_job(s):print('the %d process is running' % s)time.sleep(2)if __name__ == '__main__':# 創建進程池pool = Pool(2)for i in range(5):# 異步添加進程pool.apply_async(func=pro_job, args=(i, ))# 不允許向進程池中添加新的進程
    pool.close()# 收尸pool.join()

?

from multiprocessing import Process
import timedef job():while True:print('hello')time.sleep(1)if __name__ == '__main__':pro = Process(target=job)pro.start()

?

from threading import Thread, Lock
import timelock = Lock() # 保護互斥量
n = 100 # 多線程發成競爭的那段代碼就是互斥量def thr_job():print('the new thread is running....')global nlock.acquire()n = 200lock.release()time.sleep(3)if __name__ == '__main__':# 創建線程thr = Thread(target=thr_job, name='不一樣', daemon=True)thr.start()print(thr.name, thr.ident)# 加鎖
    lock.acquire()print(n)time.sleep(2)print(n + 10)# 解鎖
    lock.release()thr.join()

?n = 0 :任務沒發下來等待繼續發放任務

?n > 0:還有任務發放

n < 0 :沒有任務發放完成了

from threading import Thread, local# 使得多線程在使用全局的local綁定變量的時候局部化
lc = local()def fun(s):lc.name = sif __name__ == '__main__':lc.name = 'main'thr = Thread(target=fun, args=('python',))thr.start()thr.join()print(lc.name)

?

轉載于:https://www.cnblogs.com/ZHang-/p/10161845.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249965.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249965.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249965.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

livebos--iframe使用

新建一個方法。建一個參數&#xff0c;iframe控件&#xff0c;虛擬列。然后使用以下信息 <% livebos languagejavascript %>var url LB_ObjURI("Lb_lbOrganization",0,[],["NoTitle"]);var v {"edit" : "url ", "view"…

單行溢出 和多行溢出

/*單行溢出*/.one_txt_cut{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}.txt_cut{overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;}轉載于:https://www.cnblogs.com/smzd/p/8491583…

Spring方法注入 @Lookup注解使用

情景分析 在Spring的諸多應用場景中bean都是單例形式&#xff0c;當一個單利bean需要和一個非單利bean組合使用或者一個非單利bean和另一個非單利bean組合使用時&#xff0c;我們通常都是將依賴以屬性的方式放到bean中來引用&#xff0c;然后以Autowired來標記需要注入的屬性。…

Jupyter配置步驟

Jupyter是基于瀏覽器的可交互式開發工具&#xff0c;在數據科學界非常受歡迎&#xff0c;它功能齊全&#xff0c;使用方便&#xff0c;是一款數據分析和建模挖掘的利器。 本文簡介Jupyter的配置和使用過程 一、修改添加國內鏡像 通常我會先安裝Anaconda&#xff0c;再安裝Jupyt…

edittext 屬性

1.去掉edittext的底線&#xff0c;設置&#xff0c;不管是edittext&#xff0c;還是appcompatEdittext都是這個屬性 轉載于:https://www.cnblogs.com/hechangshou/p/9301004.html

定義高亮顏色

/*怎么定義高亮的顏色*/-webkit-tap-highlight-color: transparent;/*透明 其實就是不顯示顏色*/-webkit-tap-highlight-color: red; 轉載于:https://www.cnblogs.com/smzd/p/8491587.html

springboot 配置webservice接口

導入依賴的jar <!-- webservice cxf --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.6</version></dependency><dependency><groupId>org…

【Django】認證系統

目錄 #. auth模塊1. 認證 authenticate()2. 登陸 login(HttpRequest, user)3. 注銷 logout(request)4. 認證判斷 is_authenticated()5. 登陸校驗 login_requierd()6. 創建普通用戶 create_user()7. 創建超級用戶 create_superuser()8. 密碼校驗 check_password(password)9. 修改…

學習的目的是什么?

學習的目的是為了掌握生存的常識和技能&#xff0c;以便獨立地面對世界&#xff1b; 學習的目的是為了遵從生活的規范和律則&#xff0c;以便和諧地與人相處&#xff1b; 學習的目的是為了探索生命的價值和意義&#xff0c;以便有尊嚴地立于天地之間。 你覺得為什么要學習呢&am…

span里面插入文字

.text-box span::before{ content:attr(data-text);} 轉載于:https://www.cnblogs.com/smzd/p/8491664.html

Spring Boot 動態注入的兩種方式

通過Profilespring.profiles.active spring.profiles.active&#xff1a;官方解釋是激活不同環境下的配置文件&#xff0c;但是實際測試發現沒有對應的配置文件也是可以正常執行的。那就可以把這個key當作一個參數來使用 Profile&#xff1a;spring.profiles.active中激活某配…

kernel devel 安裝與卸載

1、查看系統內核 uname -r 2、查看已安裝kernel-devel uname -a ; rpm -qa kernel\* | sort 3、下載對應的rpm wget xxx/kernel-devel-2.6.32-754.el6.x86_64.rpm 或者 $ sudo yum install "kernel-devel-uname-r $(uname -r)" 4、卸載已安裝的內核 yum remove ker…

彈性布局

/* 開啟彈性布局的換行 */ flex-wrap: wrap;/* 變為多行了 無法使用 align-items 進行位置設置 align-content 在多行的時候 設置屬性 跟 justify-content 一模一樣如果只有 一行時 無法生效 *//* 調整元素 在主軸上的 排布方式flex-end 到主軸的末尾flex-start 默認值center…

詳解 vue-cli 的打包配置文件代碼(給大家寫寫注釋)

一、前言 對于webpack基礎不好&#xff0c;node指令不通的童鞋。估計對自己搭建Vue、react腳手架是相當頭疼的&#xff0c;有種無從下手的感覺。然而&#xff0c;從頭看這2塊&#xff0c;耗時太長&#xff0c;而且說實話得練才行&#xff0c;不練練手看不明白。那大多數人就采取…

AutoFac自動注入時報錯

錯誤描述&#xff1a;An error occurred during the activation of a particular registration 解決辦法&#xff1a;看到了particular這個單詞&#xff0c;用我蹩腳的英語&#xff0c;估計是部分類&#xff1f;結合報錯的兩個類存在互相引用&#xff0c;這就明白了&#xff0c…

嘗試修改源碼需要用到git存一下

git reflog查看本地記錄 git reset --hard 02a3260 轉載于:https://www.cnblogs.com/smzd/p/8492065.html

poj3713 Transferring Sylla 枚舉+tarjan判割點

其實就是判斷是否為三連通圖 三連通圖指的是去掉3個點就不連通的圖&#xff0c;但是并沒有直接求三連通的算法。著名的Tarjan算法可以求解連通和割點&#xff0c;再枚舉刪除一個點就能達到三連通的目的。 先看用例2&#xff0c;是由用例1去掉一條邊而變成非三連通圖的&#xff…

html標簽大全

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>This is study note</title><base href"我是做外鏈的&#xff0c;一般在head里面" target"_blank"><style type&q…

布爾文本搜索

select text from products where Match(# column) Against(#condition bool* IN BOOLEAN MODE); 布爾操作符     包含 必須存在 -    排除,必須不存在(即使包含其他指定的詞也不返回) >    增加排序等級 <    降低排序等級 ()    把詞組成子表達式 …

Linux 安裝Zookeeper單機版(使用Mac遠程訪問)

閱讀本文需要先閱讀安裝Zookeeper<準備> 新建目錄 mkdir /usr/local/zookeeper 解壓 cd zookeeper壓縮包所在目錄 tar -xvf zookeeper-3.4.12.tar.gz -C /usr/local/zookeeper 新建目錄 mkdir /usr/local/zookeeper/zookeeper-3.4.12/data 配置文件準備 cp /usr/local/zo…