Kezdőoldal » Számítástechnika » Programozás » Pythonban while ciklus probléma?

Pythonban while ciklus probléma?

Figyelt kérdés

Egy socketio servert csináltam python 3 ban.


def server_tick():

import time

print("Server tick started!")

i = 0

while 1:

i = i + 1

#print("i: "+str(i))

socketio.emit('server_tick', {'i':111},

namespace="/dd")

time.sleep(1) #0.05 = 50ms



if __name__ == '__main__':

server_tick()

socketio.run(app, "0.0.0.0", port=5000)


A probléma az hogy a server_tick() lefut de utána ez a sor már nem: socketio.run(app, "0.0.0.0", port=5000). Ha viszont ez a sort feljebb rakom: socketio.run(app, "0.0.0.0", port=5000) akkor a server_tick() nem fut le. Nem vagyok egy python specialista, valaki érti mi lehet a probléma? A while blokkolja hogy további függvény hívásokat, vagy mi? Felette ez van ha esetleg számít valamit.


from gevent import monkey

monkey.patch_all()


import cgi

import sys

import signal

import uuid

from flask import Flask, render_template, request

from flask_socketio import SocketIO, join_room, leave_room


app = Flask(__name__)

socketio = SocketIO(app)



2016. jún. 20. 21:56
 1/5 A kérdező kommentje:
Közben belegondoltam, és talán az a baj nem fut le a következő sor mert az eljötte levő nem ért véget, főleg ha végtelen ciklus, gondolom szál kezelés kéne a megoldáshoz.
2016. jún. 20. 22:01
 2/5 anonim ***** válasza:
Ugye végod, hogy Python forráskódot így nem lehet megosztani, ugye?
2016. jún. 20. 22:06
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:
Későn jöttem rá hogy itt a kód indent nem működik.
2016. jún. 20. 22:13
 4/5 anonim ***** válasza:
Ha indítasz egy véglenciklust amiből soha nm lép ki a programod akkor érthető hogy a ciklus utáni kód soha nm fog lefutni. Fordítva is igaz: a socketio.run soha nem tér vissza. A megoldás az lenne hogy nem ugyan abban a szálban fussanak szekvenciálisan, hanem külön szálban párhuzamosan.
2016. jún. 20. 22:14
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Ez a teljes kód, egy socketio alapú játék szerverrel kísérletezgetek. Adtam hozzá szálkezelés de igy sem jó. Ha valaki esetleg ránézne mi lehet a gond megköszönném: [link] (1 helyett i) A server_tick() és a socketio.run(app, "0.0.0.0", port=5000) el akarom indítani egyszerre.
2016. jún. 20. 22:18

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!