日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python windows epoll_Windows 10生产力提升之WSL实践

發布時間:2023/11/27 生活经验 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python windows epoll_Windows 10生产力提升之WSL实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mac 和 Windows 哪個更好,估計還能再吵幾年。拋開部分硬件上的差距,Windows 用作開發上確實有點不順手,畢竟大部分后端程序都是運行在 Linux 服務器上,macOS 占有先天優勢。之前都是通過在 Windows 上起虛擬機來解決這個問題,如今 Windows 10 推出的 WSL(Windows Subsystem for Linux),成為了新的選擇。

WSL 的官方介紹: The Windows Subsystem for Linux lets developers run GNU/Linux environment

- including most command-line tools, utilities, and applications

- directly on Windows, unmodified, without the overhead of a virtual machine

簡單來說就是不需要修改,無需虛擬機,就可以在 Windows 上直接使用 Linux 環境(grep,?sed,?awkd等),運行 Linux 程序(vim, MySQL, Apache等)。這就很舒服了,小孩子才做選擇,大人全都要,實際如何我們來實踐一番。

安裝

啟動之后就可以使用了,你可以根據自己使用習慣,做一些初始化的設置(oh-my-zsh啥的)這里就不細說了。WSL 默認是通過安裝的應用進入的(直接運行 bash.exe 也行),但大家還是喜歡通過 Xshell 等工具進入了,這就需要做一些配置。WSL 和 Windows 本機是端口共用的(這點特別注意,防止程序端口沖突了),直接通過 127.0.0.1 就能連接上,剩下的就和直接使用 Linux 差不多了。

但是,等你重啟電腦,再使用 Xshell 連接時發現連不上了,沒有 sshd 進程了,每次都需要打開 WSL 程序然后再運行 sudo service ssh start 有點麻煩。這就是 WSL 不一樣的地方了,WSL 不是真正的一個系統,沒有開機啟動這一說,把 sshd 設置成開機啟動也沒有用。既然不能加入到 WSL 的啟動項,那就加入到 Windows 的啟動項中:

編寫 run_wsl.vbs 腳本,用來在 bash.exe 中啟動 sshd,然后將腳本放到系統啟動目錄里面(WIN+R 運行 shell:Common Startup 或者 shell:startup)就行了。

1

2 setws=wscript.createobject("wscript.shell")

ws.run"C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/service ssh restart'",0

不過需要注意?sudo 需要輸入密碼,還得把密碼關了。WSL 中運行?sudo visudo 增加一行:ubuntu ALL=(root) NOPASSWD: ALL,表示 ubuntu (換成自己的)這個用戶使用 sudo 運行任何命令時都不用輸入密碼。

當然安裝之后可能會遇到一些其它問題,主要是一些安全軟件和 WSL 不兼容,比如卡巴斯基會讓 WSL 無法聯網,騰訊的 TGP 會影響綁定端口,遇到了只能暫時關掉相關軟件,相信之后這些問題會越來越少。

使用 Redis

之前在 Windows 上使用 Redis 比較麻煩,有一個 Windows 版的 Redis 但已經很久沒有更新了,還有就是選擇虛擬機。現在直接在 WSL 里面編譯安裝(make & make install)就行了。寫好配置文件,sudo redis-server /etc/redis/redis.conf 運行即可。

不過有些同學可能會像我之前把 Redis 注冊為 systemd 服務,但發現會報錯:System has not been booted with systemd as init system (PID 1). Can't operate 說的也比較明白,系統不是通過 systemd 啟動的。其實 WSL 不是一個真正的系統,應該說是一個容器,類似 Docker(這么一說感覺微軟野心好大)。

在 WSL 中運行的程序是真正的 Linux 二進制文件,不是移植版,不過當程序由用戶態切換到內核態時lxss.sys和lxcore.sys驅動將會將 Linux 的系統調用翻譯為??NT APIs 來模擬 Linux 內核。簡單來說 WSL 是將 LInux 底層 API 用 NT 實現了一遍(所以 WSL 中沒有 Linux kernel?代碼),而且有些操作還是 Linux 獨有的,比如fork(),可想而知這里面工作量有多大,任重而道遠。

言歸正傳,Redis 已經在 WSL 中啟動了,我們試試在 Windows 上能不能連上:

完美,就和 Windows 本地裝的 Redis 一樣。

與IDE集成

雖然說大部分語言都是跨平臺的,但是還是有很多差別,比如 Python 的 epoll 只能在 Linux 下使用。在 Windows 上開發不是很方便,沒有智能提示,還需要上傳到服務器運行、調試。有了 WSL,現在可以在 Windows 上開發,然后直接在 WSL 里面運行。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40 #!/usr/bin/env python3

# -*- coding: utf-8 -*-

importsocket

importselect

# 創建套接字

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('127.0.0.1',6688))

s.listen(100)

# 創建一個epoll對象

epoll=select.epoll()

epoll.register(s.fileno())

clients={}

whileTrue:

events=epoll.poll()

forfd,eventsinevents:

iffd==s.fileno():

conn,addr=s.accept()

clients[conn.fileno()]={

'conn':conn,

'addr':addr

}

print("new client {}".format(addr))

epoll.register(conn.fileno(),select.EPOLLIN|select.EPOLLET)

elifevents==select.EPOLLIN:

# Available for read

recv=clients[fd]['conn'].recv(1024)

ifrecv:

print("recv {} from {}".format(recv.strip(),clients[fd]['addr']))

clients[fd]['conn'].sendall(b'echo '+recv)

else:

# 客戶端斷開

print("close client {}".format(clients[fd]['addr']))

delclients[fd]

epoll.unregister(fd)

else:

print(fd,events)

WSL 中運行,并通過 Windows cmd 連接:

當然這也是不太方便,兩個程序切來切去,更近一步,讓這些都在 IDE 中進行。

首先要讓當前代碼在 WSL 中運行,新建一個 WSL Interpreter(獲得運行環境和智能提示),填寫需要的 Python 路徑。再把 Terminal 的環境也改成 bash.exe。

最后點擊 IDE Run 按鈕,然后打開 Terminal,運行 telnet 連接上去做測試,這一切都在 IDE 里面,沉浸式工作體驗,效率提升大幅提升,完全感受不出來是在使用 Windows。

結語

其實吧,你看宇宙第一 IDE:Visual Studio 都有 Mac 版了,平臺間的差距都被各種軟件抹平了。少點撕逼,多提高工作效率,少加班才是正道。

參考資料

總結

以上是生活随笔為你收集整理的python windows epoll_Windows 10生产力提升之WSL实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。