Malmen Posted December 30, 2007 at 10:53 PM Report Share #157193 Posted December 30, 2007 at 10:53 PM Boas.... nestes ultimos dias tenho dado os meus primeiros passos em python e posso dizer que me estou a habituar a isto, parece-me engraçado 😄 Tenho estado a tentar desenvolver um sistema de sockets com função de mais á frente vir a suportar talvez centenas de ligações em simultaneo (quem sabe), fazer um servidor tcp foi facil, encontrei muitos tuturials sobre isto, agora um servidor tcp com suporte para varios clientes e que foi mais complicado, mas fiz como todos.... google 😞 Até que ao fim de varias horas de pesquisa encontrei um site muito engraçado que resolveu o meu problema.... Está neste link http://www.pythonbrasil.com.br/moin.cgi/SocketBasico Este tuturial tem varios exemplos de socket, o exemplo que eu apliquei foi o ultimo, utilizando treads, mas existe outro exemplo utilizando o fork, eu gostava que me aconselhassem sobre qual o melhor a usar Segundo o que penso, o fork vai criar um segundo processo filho por cada ligação feita (era assim que eu tinha idealizado ao inicio), enquanto o tread vai executar tudo no mesmo processo... Qual sera a melhor forma para executar o meu codigo ? Agradeço o tempo que prestaram a ler isto.... Boas entradas ^^ Link to comment Share on other sites More sharing options...
Betovsky Posted December 31, 2007 at 12:14 AM Report Share #157205 Posted December 31, 2007 at 12:14 AM Isso depende da lógica que o teu servidor irá processar. Em termos de comunicação são ambas igualmente válidas. De notar (principalmente se o servidor for de ligações curtas e frequentes) que o custo de criar uma nova thread é inferior a criar um novo processo. Também por threads tens uma maior facilidade de controlo de administração. Ou seja, consegues controlar melhor as threads existentes, por exemplo, muito facilmente podes por um número limite e se for recebido um novo pedido de ligação por parte de um cliente enviar imediatamente uma mensagem a indicar que o servidor encontra-se sobre-lotado. Em contrapartida, nas threads o espaço de endereçamento irá ser partilhada pela todas as threads, logo terás que ter cuidado extra com concorrência e os problemas associados a esta. "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
Malmen Posted January 1, 2008 at 04:08 PM Author Report Share #157325 Posted January 1, 2008 at 04:08 PM partece-me bem, mas a minha maior questão permanecia nos forks, e eu nao sabia pq, agora ja sei, segundo o que me disseram os processadores dual core apenas obtêm maior rendimento nos processos caso esse processo se possa dividir, e entao nesse caso um processador toma conta de uma ocurrencia e outro de outra, e por ai fora, em threads isso nao vai acontecer pois nao ? Link to comment Share on other sites More sharing options...
brunotikami Posted February 12, 2008 at 04:55 PM Report Share #166272 Posted February 12, 2008 at 04:55 PM Malmen, sou membro da PythonBrasil e tmabém já li esse tutorial. Acredito realmente qeu fork possa ser mais interessante no seu caso mas tenho uam pergunta: você já pensou em implementar isso usando Twisted [1]? É realmente simples e bem abstraído ;-) [1] http://twistedmatrix.com []s! Tkm P.S. se vc quiser algumas dicas sobre Twisted, me avisa ... Link to comment Share on other sites More sharing options...
MX+ Posted March 1, 2008 at 09:45 PM Report Share #170045 Posted March 1, 2008 at 09:45 PM Usa threads. Processos não partilham memória com os o processo pai. Suponho que existam recursos partilhados entre os vários clientes. Depois threads são mais maleáveis e fáceis de debugar. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now